16x12r 2.2.0
Loading...
Searching...
No Matches
c16x12r.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
27
28#ifndef C16X12R_H
29#define C16X12R_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
52
58
63
68
73#define C16X12R_REG_PAGE_SELECT 0xFD
74#define C16X12R_REG_PAGE_LOCK 0xFE
75#define C16X12R_REG_INT_MASK 0xF0
76#define C16X12R_REG_INT_STATUS 0xF1
77
82#define C16X12R_PAGE_REG_LED_ON_OFF 0x0000
83#define C16X12R_PAGE_REG_LED_OPEN 0x0018
84#define C16X12R_PAGE_REG_LED_SHORT 0x0030
85#define C16X12R_PAGE_REG_PWM 0x0100
86#define C16X12R_PAGE_REG_MODE 0x0200
87#define C16X12R_PAGE_REG_CONFIG 0x0300
88#define C16X12R_PAGE_REG_GLOBAL_CURRENT_CTRL 0x0301
89#define C16X12R_PAGE_REG_BREATH_ABM1_CTRL1 0x0302
90#define C16X12R_PAGE_REG_BREATH_ABM1_CTRL2 0x0303
91#define C16X12R_PAGE_REG_BREATH_ABM1_CTRL3 0x0304
92#define C16X12R_PAGE_REG_BREATH_ABM1_CTRL4 0x0305
93#define C16X12R_PAGE_REG_BREATH_ABM2_CTRL1 0x0306
94#define C16X12R_PAGE_REG_BREATH_ABM2_CTRL2 0x0307
95#define C16X12R_PAGE_REG_BREATH_ABM2_CTRL3 0x0308
96#define C16X12R_PAGE_REG_BREATH_ABM2_CTRL4 0x0309
97#define C16X12R_PAGE_REG_BREATH_ABM3_CTRL1 0x030A
98#define C16X12R_PAGE_REG_BREATH_ABM3_CTRL2 0x030B
99#define C16X12R_PAGE_REG_BREATH_ABM3_CTRL3 0x030C
100#define C16X12R_PAGE_REG_BREATH_ABM3_CTRL4 0x030D
101#define C16X12R_PAGE_REG_TIME_UPDATE 0x030E
102#define C16X12R_PAGE_REG_SWY_PULLUP_SELECT 0x030F
103#define C16X12R_PAGE_REG_CSX_PULLDOWN_SELECT 0x0310
104#define C16X12R_PAGE_REG_RESET 0x0311
105 // c16x12r_reg
107
112
117
122#define C16X12R_PAGE_SELECT_0 0x00
123#define C16X12R_PAGE_SELECT_1 0x01
124#define C16X12R_PAGE_SELECT_2 0x02
125#define C16X12R_PAGE_SELECT_3 0x03
126
131#define C16X12R_PAGE_LOCK 0x00
132#define C16X12R_PAGE_UNLOCK 0xC5
133
138#define C16X12R_MODE_PWM 0x00
139#define C16X12R_MODE_ABM1 0x01
140#define C16X12R_MODE_ABM2 0x02
141#define C16X12R_MODE_ABM3 0x03
142
147#define C16X12R_CONFIG_SYNC_HIGH_Z 0x00
148#define C16X12R_CONFIG_SYNC_MASTER 0x40
149#define C16X12R_CONFIG_SYNC_SLAVE 0x80
150#define C16X12R_CONFIG_SYNC_MASK 0xC0
151#define C16X12R_CONFIG_OSD_DIS 0x00
152#define C16X12R_CONFIG_OSD_EN 0x04
153#define C16X12R_CONFIG_OSD_MASK 0x04
154#define C16X12R_CONFIG_B_EN_PWM 0x00
155#define C16X12R_CONFIG_B_EN_ABM 0x02
156#define C16X12R_CONFIG_B_EN_MASK 0x02
157#define C16X12R_CONFIG_SSD_SHUTDOWN 0x00
158#define C16X12R_CONFIG_SSD_NORMAL 0x01
159#define C16X12R_CONFIG_SSD_MASK 0x01
160
165#define C16X12R_CURRENT_MIN 0x00
166#define C16X12R_CURRENT_DEFAULT 0xA0
167#define C16X12R_CURRENT_MAX 0xFF
168
173#define C16X12R_PWM_DUTY_MIN 0x00
174#define C16X12R_PWM_DUTY_DEFAULT 0xA0
175#define C16X12R_PWM_DUTY_MAX 0xFF
176
181#define C16X12R_LED_STATE_OFF 0
182#define C16X12R_LED_STATE_ON 1
183
188#define C16X12R_NUM_LEDS 192
189#define C16X12R_NUM_ROWS 16
190#define C16X12R_NUM_COLUMNS 12
191
196#define C16X12R_ROTATION_V_0 0x00
197#define C16X12R_ROTATION_V_180 0x01
198#define C16X12R_ROTATION_H_0 0x10
199#define C16X12R_ROTATION_H_180 0x11
200
206#define C16X12R_DEVICE_ADDRESS_A2A1_00 0x50
207#define C16X12R_DEVICE_ADDRESS_A2A1_01 0x53
208#define C16X12R_DEVICE_ADDRESS_A2A1_10 0x5C
209#define C16X12R_DEVICE_ADDRESS_A2A1_11 0x5F
210 // c16x12r_set
212
217
222
227#define C16X12R_MAP_MIKROBUS( cfg, mikrobus ) \
228 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
229 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
230 cfg.sdb = MIKROBUS( mikrobus, MIKROBUS_CS ); \
231 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
232 cfg.intb = MIKROBUS( mikrobus, MIKROBUS_INT )
233 // c16x12r_map // c16x12r
236
241typedef struct
242{
243 // Output pins
244 digital_out_t sdb;
245 digital_out_t rst;
246
247 // Input pins
248 digital_in_t intb;
249
250 // Modules
251 i2c_master_t i2c;
252
253 // I2C slave address
255
257
259
260} c16x12r_t;
261
266typedef struct
267{
268 pin_name_t scl;
269 pin_name_t sda;
270
271 pin_name_t sdb;
272 pin_name_t rst;
273 pin_name_t intb;
274
275 uint32_t i2c_speed;
276 uint8_t i2c_address;
277
279
284typedef enum
285{
288
290
296
307
322
336
348err_t c16x12r_write_reg ( c16x12r_t *ctx, uint8_t reg, uint8_t data_in );
349
362err_t c16x12r_write_regs ( c16x12r_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
363
375err_t c16x12r_read_reg ( c16x12r_t *ctx, uint8_t reg, uint8_t *data_out );
376
389err_t c16x12r_read_regs ( c16x12r_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
390
400
410
420
430void c16x12r_set_rst_pin ( c16x12r_t *ctx, uint8_t state );
431
441
452
463
474err_t c16x12r_select_page ( c16x12r_t *ctx, uint8_t page );
475
487err_t c16x12r_write_page_reg ( c16x12r_t *ctx, uint16_t page_reg, uint8_t data_in );
488
501err_t c16x12r_write_page_regs ( c16x12r_t *ctx, uint16_t page_reg, uint8_t *data_in, uint8_t len );
502
514err_t c16x12r_read_page_reg ( c16x12r_t *ctx, uint16_t page_reg, uint8_t *data_out );
515
528err_t c16x12r_read_page_regs ( c16x12r_t *ctx, uint16_t page_reg, uint8_t *data_out, uint8_t len );
529
540
551
562err_t c16x12r_set_pwm ( c16x12r_t *ctx, uint8_t duty );
563
574err_t c16x12r_set_mode ( c16x12r_t *ctx, uint8_t mode );
575
586void c16x12r_set_led_state ( c16x12r_t *ctx, uint8_t led_num, uint8_t state );
587
598
609err_t c16x12r_draw_picture ( c16x12r_t *ctx, const uint16_t *image );
610
621err_t c16x12r_write_char ( c16x12r_t *ctx, uint8_t data_in );
622
634err_t c16x12r_write_string ( c16x12r_t *ctx, uint8_t *data_in, uint16_t speed_ms );
635
636#ifdef __cplusplus
637}
638#endif
639#endif // C16X12R_H
640 // c16x12r
642
643// ------------------------------------------------------------------------ END
c16x12r_return_value_t
16x12 R Click return value data.
Definition c16x12r.h:285
@ C16X12R_ERROR
Definition c16x12r.h:287
@ C16X12R_OK
Definition c16x12r.h:286
#define C16X12R_NUM_ROWS
Definition c16x12r.h:189
#define C16X12R_NUM_COLUMNS
Definition c16x12r.h:190
err_t c16x12r_select_page(c16x12r_t *ctx, uint8_t page)
16x12 R select page function.
err_t c16x12r_unlock_page(c16x12r_t *ctx)
16x12 R unlock page function.
err_t c16x12r_read_page_regs(c16x12r_t *ctx, uint16_t page_reg, uint8_t *data_out, uint8_t len)
16x12 R read page registers function.
err_t c16x12r_fill_screen(c16x12r_t *ctx)
16x12 R fill screen function.
err_t c16x12r_draw_picture(c16x12r_t *ctx, const uint16_t *image)
16x12 R draw picture function.
err_t c16x12r_lock_page(c16x12r_t *ctx)
16x12 R lock page function.
err_t c16x12r_clear_screen(c16x12r_t *ctx)
16x12 R clear screen function.
err_t c16x12r_write_string(c16x12r_t *ctx, uint8_t *data_in, uint16_t speed_ms)
16x12 R write string function.
err_t c16x12r_write_char(c16x12r_t *ctx, uint8_t data_in)
16x12 R write character function.
err_t c16x12r_write_regs(c16x12r_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
16x12 R write registers function.
err_t c16x12r_read_reg(c16x12r_t *ctx, uint8_t reg, uint8_t *data_out)
16x12 R read register function.
err_t c16x12r_read_page_reg(c16x12r_t *ctx, uint16_t page_reg, uint8_t *data_out)
16x12 R read page register function.
err_t c16x12r_set_pwm(c16x12r_t *ctx, uint8_t duty)
16x12 R set PWM function.
err_t c16x12r_write_page_reg(c16x12r_t *ctx, uint16_t page_reg, uint8_t data_in)
16x12 R write page register function.
void c16x12r_set_rst_pin(c16x12r_t *ctx, uint8_t state)
16x12 R set reset pin state function.
err_t c16x12r_read_regs(c16x12r_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
16x12 R read registers function.
void c16x12r_disable_device(c16x12r_t *ctx)
16x12 R disable device function.
err_t c16x12r_write_leds(c16x12r_t *ctx)
16x12 R write LEDs function.
err_t c16x12r_init(c16x12r_t *ctx, c16x12r_cfg_t *cfg)
16x12 R initialization function.
err_t c16x12r_write_reg(c16x12r_t *ctx, uint8_t reg, uint8_t data_in)
16x12 R write register function.
void c16x12r_set_led_state(c16x12r_t *ctx, uint8_t led_num, uint8_t state)
16x12 R set LED state function.
err_t c16x12r_default_cfg(c16x12r_t *ctx)
16x12 R default configuration function.
uint8_t c16x12r_get_intb_pin(c16x12r_t *ctx)
16x12 R get interrupt pin function.
void c16x12r_reset_device_i2c(c16x12r_t *ctx)
16x12 R reset device I2C function.
void c16x12r_cfg_setup(c16x12r_cfg_t *cfg)
16x12 R configuration object setup function.
void c16x12r_enable_device(c16x12r_t *ctx)
16x12 R enable device function.
err_t c16x12r_set_mode(c16x12r_t *ctx, uint8_t mode)
16x12 R set mode function.
err_t c16x12r_write_page_regs(c16x12r_t *ctx, uint16_t page_reg, uint8_t *data_in, uint8_t len)
16x12 R write page registers function.
16x12 R Click configuration object.
Definition c16x12r.h:267
pin_name_t sdb
Definition c16x12r.h:271
pin_name_t intb
Definition c16x12r.h:273
uint32_t i2c_speed
Definition c16x12r.h:275
pin_name_t scl
Definition c16x12r.h:268
pin_name_t sda
Definition c16x12r.h:269
pin_name_t rst
Definition c16x12r.h:272
uint8_t i2c_address
Definition c16x12r.h:276
16x12 R Click context object.
Definition c16x12r.h:242
uint8_t text_rotation
Definition c16x12r.h:258
i2c_master_t i2c
Definition c16x12r.h:251
digital_out_t rst
Definition c16x12r.h:245
digital_out_t sdb
Definition c16x12r.h:244
uint8_t slave_address
Definition c16x12r.h:254
uint8_t leds[C16X12R_NUM_COLUMNS *C16X12R_NUM_ROWS/8]
Definition c16x12r.h:256
digital_in_t intb
Definition c16x12r.h:248